package com.ruoyi.zhjj.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;

/**
 * 人员信息，用于记录人员的基本信息和打卡记录对象 zhjj_personnel_info
 *
 * @author ruoyi
 * @date 2024-12-28
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ZhjjPersonnelInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 数据发送方-数据表主键id */
    @Excel(name = "数据发送方-数据表主键id")
    @NotNull(message = "主数据发送方ID不能为空")
    private Integer extSysId;

    /** 身份证号，对应3.4人员信息的身份证号 */
    @Excel(name = "身份证号，对应3.4人员信息的身份证号")
    @NotBlank(message = "身份证号不能为空")
    @Length(max = 18, message = "身份证号长度不能超过18个字符")
    @Pattern(regexp = "^\\d{17}[\\dX]$", message = "身份证号格式不正确")
    private String idNumber;

    /** 工号，对应3.4返回生成人员工号 */
    @Excel(name = "工号，对应3.4返回生成人员工号")
    @NotBlank(message = "工号不能为空")
    @Length(max = 30, message = "工号长度不能超过30个字符")
    private String workNumber;

    /** 打卡坐标，记录打卡时的地理位置坐标 */
    @Excel(name = "打卡坐标，记录打卡时的地理位置坐标")
    @NotBlank(message = "打卡坐标不能为空")
    @Length(max = 30, message = "打卡坐标长度不能超过30个字符")
    private String clockCoordinates;

    /** 打卡地点，记录打卡的具体地址 */
    @Excel(name = "打卡地点，记录打卡的具体地址")
    @NotBlank(message = "打卡地点不能为空")
    @Length(max = 30, message = "打卡地点长度不能超过30个字符")
    private String clockAddress;

    /** 打卡方向，1-上班 2-下班 */
    @Excel(name = "打卡方向，1-上班 2-下班")
    @NotNull(message = "打卡方向不能为空")
    @Min(value = 1, message = "打卡方向必须是1或2")
    @Max(value = 2, message = "打卡方向必须是1或2")
    private Long entryExitTarget;

    /** 打卡时间，格式为“yyyy-MM-dd HH:mm:ss” */

    @Excel(name = "打卡时间，格式为“yyyy-MM-dd HH:mm:ss”", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @NotNull(message = "打卡时间不能为空")
    private Date clockIn;


    /** 删除标志，默认值为0表示未删除 */
    private Long delFlag;
}
